はじめに:#2 から毎回出ていたあの数字の正体
PHREEQC の出力を見るたびに、長い計算結果に「なんだこれは!!!」と思ったことに違いない。特に、下の英語と数字については、見て見ぬふりをしてきた。今回はこれについて見てみよう:
Calcite 0.39 -7.83 -8.22
Dolomite 0.65 -16.65 -17.09
Gypsum -0.48 -5.28 -4.80
Kaolinite 2.64 -8.11 -8.11
Quartz 0.18 -3.88 -4.00
Pyrite -2.34 -30.44 -28.10
この SI(Saturation Index、飽和指数) こそが、PHREEQC の出力で最も頻繁に参照する数値である。 正確に読めると、その水が「どの鉱物を溶かしているか」「どの鉱物を沈殿させようとしているか」が 一目でわかる。
- SI の定義と IAP・Ksp の意味
- SI > 0・SI = 0・SI < 0 が何を意味するかの直感的理解
- 天然水の SI パターン読解(酸性雨・地下水・温泉水・海水)
- PHREEQC コード で複数鉱物の SI を一括取得する方法
- Kaolinite SI が高い値を示す理由と地球化学的意味
- SI の不確かさ(測定誤差・温度補正)への注意点
- 水処理・スケール予測・鉱物探査への応用
理論:SI の定義
イオン活量積(IAP)と溶解度積(Ksp)
鉱物の溶解平衡を例に取ろう。カルサイト(CaCO₃)の溶解反応は:
\[\text{CaCO}_3 \text{(s)} \rightleftharpoons \text{Ca}^{2+} + \text{CO}_3^{2-}\]
平衡定数(溶解度積)は:
\[K_{sp} = a_{\text{Ca}^{2+}} \cdot a_{\text{CO}_3^{2-}} = 10^{-8.48} \quad (25°C)\]
実際の溶液でのイオン活量積(IAP)は:
\[\text{IAP} = a_{\text{Ca}^{2+}}^{\text{実測}} \cdot a_{\text{CO}_3^{2-}}^{\text{実測}}\]
SI の定義
\[SI = \log_{10}\left(\frac{\text{IAP}}{K_{sp}}\right) = \log(\text{IAP}) - \log(K_{sp})\]
鉱物は溶解する
(もしあれば)
酸性雨・軟水
溶解も沈殿もない
熱力学的平衡
石灰岩地下水
鉱物は沈殿する
(核形成が起きれば)
温泉・地熱流体
SI > 0 でも鉱物がすぐ沈殿するとは限らない。 核形成(nucleation) には活性化エネルギーが必要で、特に無機物の沈殿は数時間〜数年かかることがある(過飽和の持続)。 逆に SI < 0 でも溶解は瞬間的ではなく、反応速度(kinetics)に依存する。 SI はあくまで 熱力学的な駆動力の方向 を示すものだと思ってほしい。
図解:SI の概念
図1. 飽和指数の概念図 — 水位(IAP)と堤防(Ksp)のアナロジー
カルサイトの SI を手計算してみる
理論の確認として、海水の SI(Calcite) を手で計算してみよう。
# #9 より、γ(Ca²⁺) = 0.28 in seawater
m(Ca²⁺) = 0.0103 mol/kg
a(Ca²⁺) = 0.28 × 0.0103 = 0.00288
# CO₃²⁻ の活量(PHREEQC 出力より)
a(CO₃²⁻) = 2.37×10⁻⁵ (pH 8.22, Alk 2.3 mM)
IAP = a(Ca²⁺) × a(CO₃²⁻)
= 0.00288 × 2.37×10⁻⁵
= 6.83×10⁻⁸
log IAP = log(6.83×10⁻⁸) = -7.17
log Ksp (Calcite, 25°C) = -8.48
SI = -7.17 - (-8.48) = +0.72 ← PHREEQC 実測値 +0.721 と一致
つまり海水は熱力学的にはカルサイトを沈殿させるべき状態にある。 しかし、実際に沈殿しないのは 核形成の活性化エネルギー と Mg²⁺ による阻害効果が働くからである。
PHREEQCコード(完全版)
設定:5 種類の天然水での多鉱物 SI 一括計算
Calcite・Kaolinite の SI を正しく計算するには、すべての溶液に Al と Fe を必ず定義 する必要がある。
これらが未定義(= 濃度ゼロ)の場合、PHREEQCは IAP を計算できず SI = −999.999(計算不能)を返す。
また、炭酸系(Calcite)は C(4) または Alkalinity の定義が必須である。
# ============================================================
# DeepFlow #10 - 飽和指数(SI)一括計算
# 5 種類の天然水 × Calcite・Quartz・Kaolinite・Goethite
# ============================================================
SOLUTION 1 "酸性雨"
temp 15
pH 4.5
pe 12
units mol/kgw
S(6) 1e-6
N(5) 5e-6
Ca 2e-6 # 大気由来の微量Ca
C(4) 1e-5 # 大気CO₂由来(pCO2 ≈ 400ppm 相当)
Si 1e-5 # 大気由来の微量Si
Al 1e-7 # 風化開始前の微量Al
Fe(2) 1e-7
Fe(3) 1e-10
SOLUTION 2 "石灰岩地下水"
temp 12
pH 7.4
pe 4
units mol/kgw
Ca 2.1e-3
Mg 0.8e-3
Na 0.5e-3
K 0.1e-3
Cl 0.4e-3
Alkalinity 5.2e-3 as HCO3
S(6) 0.3e-3
Si 0.1e-3
Al 1e-7
Fe(2) 1e-7
Fe(3) 1e-10
SOLUTION 3 "花崗岩地下水"
temp 10
pH 6.2
pe 6
units mol/kgw
Ca 0.4e-3
Mg 0.1e-3
Na 1.2e-3
K 0.3e-3
Cl 0.8e-3
Alkalinity 1.5e-3 as HCO3
Si 0.3e-3
Al 2e-6 # 長石風化由来(花崗岩地下水の典型値)
S(6) 1e-5
Fe(2) 1e-7
Fe(3) 1e-10
SOLUTION 4 "炭酸温泉水"
temp 50
pH 6.8
pe 2
units mol/kgw
Ca 5.0e-3
Mg 1.0e-3
Na 8.0e-3
K 0.5e-3
Cl 2.0e-3
Alkalinity 12.0e-3 as HCO3
S(6) 1.0e-3
Fe(2) 0.5e-3
Si 1.0e-3
Al 5e-7
SOLUTION 5 "海水"
temp 25
pH 8.22
pe 8.451
units mol/kgw
Na 0.4689
Mg 0.0528
Ca 0.0103
K 0.0102
Cl 0.5453
Alkalinity 2.3e-3 as HCO3
S(6) 0.0283
Si 1.0e-4
Al 1e-8
Fe(2) 1e-8
Fe(3) 1e-10
# -------- SI 計算・出力 --------
SELECTED_OUTPUT 1
-file si_comparison.txt
-solution true
-pH true
-temperature true
-ionic_strength true
-saturation_indices Calcite Quartz Chalcedony Kaolinite Goethite
USER_PUNCH 1
-headings Solution Temp pH Ionic_Strength SI_Calcite SI_Quartz SI_Chalcedony SI_Kaolinite SI_Goethite
-start
10 PUNCH DESCRIPTION, TEMP, -LA("H+"), MU, \
SI("Calcite"), SI("Quartz"), SI("Chalcedony"), SI("Kaolinite"), SI("Goethite")
-end
USE solution 1
END
USE solution 2
END
USE solution 3
END
USE solution 4
END
USE solution 5
END
計算結果と読み方
下表はすべて上記コードを実際に実行した結果である。
| 溶液 | pH | SI Calcite |
SI Quartz |
SI Kaolinite |
診断 |
|---|---|---|---|---|---|
| 酸性雨 | 4.5 | −10.13 | −0.87 | −5.52 | 全鉱物を強く溶かす 炭酸塩・カオリナイト共に不飽和 |
| 石灰岩地下水 | 7.4 | +0.15 | +0.18 | +2.64 | Calcite・Quartz は平衡付近 Kaolinite は強過飽和 |
| 花崗岩地下水 | 6.2 | −2.23 | +0.69 | +6.96 | 炭酸塩不飽和、石英は過飽和 Kaolinite は極端な過飽和(※下記参照) |
| 炭酸温泉水 | 6.8 | +0.65 | +0.64 | +2.76 | Calcite・Quartz 共に過飽和 スケール注意域(SI > 0.5) |
| 海水 | 8.22 | +0.72 | +0.04 | −2.77 | Calcite 過飽和・Quartz ほぼ平衡 Kaolinite は不飽和(高イオン強度の影響) |
Kaolinite の SI が極端に高い理由
花崗岩地下水で SI(Kaolinite) = +6.96 という高い値が気になる。これは計算ミスではなく、地球化学的に意味のある値であると思う。
カオリナイトの溶解反応は次のように書ける:
\[\text{Al}_2\text{Si}_2\text{O}_5(\text{OH})_4 + 6\text{H}^+ \rightleftharpoons 2\text{Al}^{3+} + 2\text{H}_4\text{SiO}_4 + \text{H}_2\text{O}\]
この反応の log K(Ksp に相当)は約 −7.4(phreeqc.dat)。
IAP は Al³⁺・Si・H⁺ の活量によって決まり、特にH⁺活量(pH)の寄与が支配的であるため、pH 6.2 の条件では Al が 2 μmol/L(= 2e-6)程度存在するだけでも IAP は非常に大きくなる。
SI = +7 程度の過飽和は、花崗岩地域の風化フロントではむしろ自然な結果で、
「長石からカオリナイトへの変質が熱力学的に強く駆動されている状態」を意味する。
実際の野外では Kaolinite は長石の溶解に伴ってその表面で形成され、結果として置換的に生成する。すなわち、カオリナイトは熱力学的には生成しやすいが、反応全体は主に長石の溶解速度や核形成過程によって制約されるため、極めてゆっくり形成される鉱物である。
応用 1:スケール(カルサイト沈殿)予測
温泉や地熱発電では、温水が冷えるにつれて SI が変化してスケール(垢)が形成される可能性がある。 炭酸温泉水(今回の計算)では湧出時(50°C)で SI(Calcite) = +0.72 と既に過飽和域にある。 この計算は phreeqpy(Python バインディング)で実行した。
import os
import pandas as pd
from phreeqpy.iphreeqc.phreeqc_dll import IPhreeqc
import matplotlib.pyplot as plt
def run_scale_prediction():
current_dir = os.path.dirname(os.path.abspath(__file__))
db_path = os.path.join(current_dir, "phreeqc.dat")
phreeqc = IPhreeqc()
phreeqc.load_database(db_path)
input_script = """
SOLUTION 1 "炭酸温泉(湧出)"
temp 50
pH 6.8
units mol/kgw
Ca 5.0e-3
Mg 1.0e-3
Na 8.0e-3
K 0.5e-3
Cl 2.0e-3
Alkalinity 12.0e-3 as HCO3
S(6) 1.0e-3
Fe(2) 0.5e-3
Si 1.0e-3
Al 5e-7
REACTION_TEMPERATURE 1
50 30 15
SELECTED_OUTPUT 1
-reset false
-temperature true
-ph true
-si Calcite Aragonite
"""
phreeqc.run_string(input_script)
output = phreeqc.get_selected_output_array()
if output:
return pd.DataFrame(output[1:], columns=output[0])
return "No results."
if __name__ == "__main__":
results = run_scale_prediction()
print(results)
plt.figure(figsize=(8, 5))
plt.plot(results['temp(C)'], results['si_Calcite'], marker='o', label='Calcite')
plt.plot(results['temp(C)'], results['si_Aragonite'], marker='s', label='Aragonite')
plt.axhline(0, color='red', linestyle='--', alpha=0.5)
plt.title("Temperature vs Saturation Index (SI)")
plt.xlabel("Temperature (°C)")
plt.ylabel("Saturation Index (SI)")
plt.gca().invert_xaxis()
plt.legend()
plt.grid(True)
plt.show()pip install phreeqpyphreeqc.dat はスクリプトと同じフォルダに置くこと。
Windows の場合は phreeqc.dat のパスに日本語・スペースが含まれないよう注意。
図2. 炭酸温泉水の温度低下に伴う SI(Calcite) の変化(Python / phreeqpy 実行結果)— 全温度域で過飽和を維持しながら、冷えるにつれて SI は低下する
カルサイトは一般に 逆行性(retrograde solubility) を示し、温度が下がると溶けにくくなる。
しかし今回の Python コードでは、初期の Alkalinity 12 mmol/L だけを炭酸源とし、C(4) の過剰追加を行っていない。
この条件では温度低下に伴って CO₂ 溶解度が上がり(Henry 則)、溶液中の H₂CO₃* が増加して
\(\text{CO}_3^{2-}\) が一部 \(\text{HCO}_3^-\) 側(会合側)へシフトし \(\text{CO}_3^{2-}\) が減少する。
その結果 IAP が減少し、SI は温度とともに低下する(正行性に近い挙動)。
逆行性が現れるのは pCO₂ を固定した開放系(例:大気と平衡な湧出口)や
炭酸濃度が十分に高い閉鎖系で顕著になる。
実際の温泉スケール診断では、現場の pCO₂ 条件を正確に把握することが重要になる。
応用 2:水質タイプの診断 — SI パターンで岩石を読む
SI パターンを読むと、水がどの岩石と平衡を保って流れてきたかがわかる:
SI(Quartz) = +0.18(平衡付近)
SI(Kaolinite) = +2.64(過飽和)
Ca–HCO₃ 型水質。カルサイトと平衡に近く、 滞留時間が長いほど SI(Calcite) ≈ 0 に近づく。 Kaolinite 過飽和は長石の粘土化が進んでいることを示す。
SI(Quartz) = +0.69(過飽和)
SI(Kaolinite) = +6.96(極端な過飽和)
Na–HCO₃ 型。長石の風化で Na・Si・Al が供給。 Kaolinite の高 SI は風化が強く駆動されているサインで、 実際に長石表面の粘土化が進行中と判断できる。
SI(Quartz) = +0.64(過飽和)
SI(Kaolinite) = +2.76(強過飽和)
高 Alkalinity(12 mmol/L)が炭酸塩過飽和の主因。 配管・熱交換器でのカルサイトスケール形成に注意。 この計算条件(閉鎖系・低 C(4))では温度低下で SI は低下するが、 全温度域で SI > 0 を維持するためスケールリスクは続く。
SI(Quartz) = +0.04(ほぼ平衡)
SI(Kaolinite) = −2.77(不飽和)
炭酸塩は過飽和だが生物活動なしには沈殿しにくい。 高イオン強度(μ ≈ 0.65)のため Al 活量が抑制され、 Kaolinite は不飽和となる。
SI の不確かさ:測定誤差をどう扱うか
現場測定の pH 誤差 ±0.1 は、SI に約 ±0.1 の不確かさをもたらす。 温度誤差 ±2°C は炭酸系で SI ±0.1〜0.2 に相当する。 したがって、|SI| < 0.2 は「実質的に平衡」 と解釈するのが現実的である。
下記の表にSIの判断幅についてまとめた。
| SI の範囲 | 地球化学的意味 | 実用的判断 |
|---|---|---|
| SI < −1 | 強く不飽和 — 溶解駆動力が大きい | 炭酸塩では急速溶解/ケイ酸塩では速度制約あり |
| −1 ≤ SI < −0.2 | 不飽和 — 緩やかな溶解 | スケールなし、長期的に鉱物消耗 |
| −0.2 ≤ SI ≤ +0.2 | 概ね平衡 — 測定・温度誤差の範囲 | その鉱物が系を支配している可能性 |
| +0.2 < SI ≤ +1 | 軽度の過飽和 — 沈殿の可能性 | 炭酸塩では析出開始/ケイ酸塩では限定的 |
| SI > +1 | 強い過飽和 — 熱力学的に沈殿有利 | 炭酸塩ではスケール形成/ケイ酸塩では核形成・速度制約により必ずしも沈殿しない |
※ SI は熱力学的駆動力を示す指標であり、実際の沈殿・溶解速度は鉱物種および反応速度論に強く依存する。下表に主な誤差源を示す。
| 誤差源 | 典型的誤差 | SI への影響 | 対策 |
|---|---|---|---|
| pH 測定 | ±0.05–0.1 | ±0.05–0.1 | 現場測定・温度補正 |
| 温度測定 | ±1–2°C | ±0.1–0.2 | 採水時に正確に記録 |
| アルカリ度分析 | ±2–5% | ±0.02–0.05 | 速やかに滴定 |
| Ca²⁺ 分析 | ±2–5% | ±0.02–0.05 | ICP-OES 推奨 |
| 熱力学データベース | ±0.05–0.2 | ±0.05–0.2 | llnl.dat vs phreeqc.dat の比較 |
まとめ:SI はシリーズ全体の「ものさし」だった
REACTION ブロックで岩石片を少しずつ溶かしながら、 pH・SI・化学種濃度がどう変化するかを追う。 「雨水が石灰岩に接触してから地下水になるまで」のシミュレーションである。 #3〜#10 で積み上げた知識がすべて統合される記事になる。
参考文献(References)
- #1 インストールと最初の計算
- #2 Speciationで海水を解析する
- #3 MixingとEQUILIBRIUM_PHASES
- #4 カルサイト−CO₂水反応
- #5 炭酸地下水と海水の混合
- #6 黄鉄鉱の酸化(AMD)
- #7 溶解度ダイアグラム(Gibbsite)
- #8 Pythonでの可視化
- #9 イオン強度と活量係数
- [#10 飽和指数(SI)の使いこなし]
- #11 反応経路モデリング(REACTION block の応用)
DeepFlow | 地球科学シミュレーションの深みへ